iT邦幫忙

0

解LeetCode的學習筆記Day1_Two Sum

  • 分享至 

  • xImage
  •  

開始記錄寫Leetcode的過程
今天是紀錄的Day1,其實已經寫幾天的leetcode了

leetcode的第一題Two Sum:given an array of integers nums and integer target
return indices of the two numbers such that add up to target.
給定一個陣列nums和整數target回傳nums中相加起來等於target的元素的兩個索引值

範例:input:nums = [2,7,11,15] , target = 9
output:[0,1]
explanation:nums[0]+nums[1]=9,所以回傳[0,1]

最直接想到的解法就是用巢狀迴圈(Nested loop)遍歷整個nums找出所有可能
https://ithelp.ithome.com.tw/upload/images/20250921/201792343UMmTbJF7R.png
這樣的執行效率較差

第二種解法
https://ithelp.ithome.com.tw/upload/images/20250921/20179234vaHcC6DtmZ.png
1.建立一個dictionary
2.使用enumerate同時取得索引和元素
3.算出取得的元素和target的差
4.如果算出的差在dic裡就代表找到兩個索引值並回傳
5.如果沒有找到就把元素和對應索引存入dic
用範例假設第一次執行(i=0,num=2):
complement = 9 - 2 = 7, 7不存在dic裡所以存入,此時dic={2:0}
第二次執行(i=1,num=7)
complement = 9 - 7 = 2, 找到2在dic裡,回傳[num_dict[2], 1]也就是[0, 1],這樣就找到我們要的兩個索引值了


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言